//package com.kehutong.common;
//
//import org.coraframework.config.Config;
//import org.coraframework.mvc.webservice.URLDecorder;
//import org.coraframework.util.Objects;
//
//import java.util.*;
//
//
//public class KhtURLDecoder implements URLDecorder {
//
//
//    private Map<String, String> urlMap;
//
//    public KhtURLDecoder(Config config) {
//        Map<String, String> map = new HashMap<>();
//        config.entrySet().forEach(e->map.put(e.getKey(), e.getValue().unwrapped().toString()));
//        urlMap = Collections.unmodifiableMap(map);
//    }
//
//    @Override
//    public String getPrefixUrl(String page) {
//        if (page.charAt(0) == 'h' &&
//                page.charAt(1) == 't' &&
//                page.charAt(2) == 't' &&
//                page.charAt(3) == 'p') {
//            return page;
//        }
//
//        if (Objects.isEmpty(page)) {
//            throw new RuntimeException("url can not null");
//        }
//
//        if (page.charAt(0) != '/') {
//            throw new RuntimeException("url must begin with '/'");
//        }
//
//        String prefix = getPrefix(page);
//        return urlMap.get(prefix) + page;
//    }
//
//    private String getPrefix(String url) {
//        List<String> signs = parseArray(url);
//        String prefix = signs.get(0);
//        if ("kht-bin".equals(prefix)) {
//            return signs.get(1);
//        }
//
//        return prefix;
//    }
//
//    public List<String> parseArray(String context) {
//        List<String> contentList = new ArrayList<>();
//
//        if (Objects.nonEmpty(context)) {
//            StringBuilder buf = new StringBuilder();
//            char[] chs = context.toCharArray();
//            for (char ch : chs) {
//                if (ch == '/') {
//                    if (buf.length() > 0) {
//                        contentList.add(buf.toString());
//                    }
//                    buf = new StringBuilder();
//                    continue;
//                }
//
//                buf.append(ch);
//            }
//
//            if (buf.length() > 0 && buf.length() > 0) {
//                contentList.add(buf.toString());
//            }
//        }
//        return contentList;
//    }
//}
